package cz.muni.fi.pa165.mushroom.website.services;

import cz.muni.fi.pa165.mushroom.website.dto.GathererDto;

import java.util.List;

/**
 * @author: Veronika Lovrantova
 */
public interface GathererService {
    
    /**
     * Adding Gatherer object into database.
     * 
     * @param gathererDto Object gathererDto to be stored in the database
     * @return created Gatherer stored in the database
     */
    public void createGatherer(GathererDto gathererDto);
    
    /**
     * Updating Gatherer object in database.
     * 
     * @param gathererDto Object gathererDto to be updated in the database
     * @return updated Gatherer object
     */
    public void updateGatherer(GathererDto gathererDto);
    
    /**
     * Deleting Gatherer object from database.
     *
     * @param gathererDto Object GathererDto to be deleted.
     */
    public void removeGatherer(GathererDto gathererDto);
    
    /**
     * Finding specific Gatherer object in database.
     *
     * @param id id of Gatherer to be found
     * @return GathererDto if found else null
     */
    public GathererDto findGatherer(Long id);
    
    /**
     * List all gatherers in the database.
     * 
     * @return List of visits DTOs from the database.
     */
    public List<GathererDto> listGatherers();   
    
    /**
     * Find gatherer with given username
     * 
     * @param username username to find
     * @return GathererDto with given username
     */
    public GathererDto findGathererByUsername(String username);
}
